using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text;
using ServiceMReviewer.DTO;

namespace ServiceMReviewer
{
    /// <summary>
    /// The interface that exposes methods for clients can interact with database
    /// </summary>
	[ServiceContract]
	public interface ISvcMReviewer
	{
		/////////////////// ESTABLISHMENTTYPE ///////////////////
		[OperationContract]
		List<EstablishmentTypeDTO> EstablishmentType_SelectAll();
		[OperationContract]
		EstablishmentTypeDTO EstablishmentType_SelectByID(int id);
		[OperationContract]
		bool EstablishmentType_Insert(EstablishmentTypeDTO obj);
		[OperationContract]
		bool EstablishmentType_Delete(int id);
		[OperationContract]
		bool EstablishmentType_Update(EstablishmentTypeDTO obj);
		[OperationContract]
		List<EstablishmentTypeDTO> EstablishmentType_RetrieveByID(int id);

		/////////////////// ESTABLISHMENT ///////////////////
		[OperationContract]
		List<EstablishmentDTO> Establishment_SelectAll();
		[OperationContract]
		EstablishmentDTO Establishment_SelectByID(string id);
		[OperationContract]
		bool Establishment_Insert(EstablishmentDTO obj);
		[OperationContract]
		bool Establishment_Delete(string id);
		[OperationContract]
		bool Establishment_Update(EstablishmentDTO obj);
		[OperationContract]
		List<EstablishmentDTO> Establishment_RetrieveByID(string id);
		[OperationContract]
		List<EstablishmentDTO> Establishment_SelectByEstablishmentType(int establishmenttype);
		[OperationContract]
		List<EstablishmentDTO> Establishment_SelectByFoodType(int foodtype);

		/////////////////// MEALTYPE ///////////////////
		[OperationContract]
		List<MealTypeDTO> MealType_SelectAll();
		[OperationContract]
		MealTypeDTO MealType_SelectByID(int id);
		[OperationContract]
		bool MealType_Insert(MealTypeDTO obj);
		[OperationContract]
		bool MealType_Delete(int id);
		[OperationContract]
		bool MealType_Update(MealTypeDTO obj);
		[OperationContract]
		List<MealTypeDTO> MealType_RetrieveByID(int id);

		/////////////////// REVIEW ///////////////////
		[OperationContract]
		List<ReviewDTO> Review_SelectAll();
		[OperationContract]
		ReviewDTO Review_SelectByID(int id);
		[OperationContract]
		bool Review_Insert(ReviewDTO obj);
		[OperationContract]
		bool Review_Delete(int id);
		[OperationContract]
		bool Review_Update(ReviewDTO obj);
		[OperationContract]
		List<ReviewDTO> Review_RetrieveByID(int id);
		[OperationContract]
		List<ReviewDTO> Review_SelectByEstablisment(string establisment);
		[OperationContract]
		List<ReviewDTO> Review_SelectByMealType(int mealtype);

		/////////////////// FOODTYPE ///////////////////
		[OperationContract]
		List<FoodTypeDTO> FoodType_SelectAll();
		[OperationContract]
		FoodTypeDTO FoodType_SelectByID(int id);
		[OperationContract]
		bool FoodType_Insert(FoodTypeDTO obj);
		[OperationContract]
		bool FoodType_Delete(int id);
		[OperationContract]
		bool FoodType_Update(FoodTypeDTO obj);
		[OperationContract]
		List<FoodTypeDTO> FoodType_RetrieveByID(int id);
	}
}
